﻿<?php
/**
 * Script d'installation et de mise &eacute; jour de catofong
 * Version 1.0
 */
require_once("lib/util.lib.php");

if( file_exists("conf/conf.inc.php") ){
  $conf_file = "conf/conf.inc.php";

}
else{
  $conf_file = "conf/conf.dist.inc.php";
}
require_once($conf_file);

error_reporting(E_ALL);
$version_courante = 1;
$request = $_POST;
if (BD_NOM == "")
  if( isset($request["bd_nom"]) && 
      isset($request["bd_ip"]) && 
      isset($request["bd_usr"])){
  
    //le forumlaire d'installation a ete saisit, il faut valider les informaitons fournies.
    mysql_connect($request["bd_ip"],$request["bd_usr"],$request["bd_mdp"]);
    if ($message = mysql_error()){
      echo "impossible de se connecter.";
    }
    else{
      mysql_select_db($request["bd_nom"]);
      if ($message = mysql_error()){
        echo "impossible de s&eacute;lectionner la base de donn&eacute;es.";
      }
      else{
        //reussite: sauvegarder les informations et recharger la page pour proceder a l'installation de la bd
        sauvegarderInformations($request,$conf_file);
        installationMAJ($request["bd_prefix"],true);
      }
    }
    
  }
  else{
    //Aucune information de base de donnee et aucun formulaire de configuration n'a ete saisit
    formulaireInstallation();
  }
else{
  //L'information de la base de donnee est presente donc nous devont verifier les mises a jour
  installationMAJ(BD_PREFIX);
}

function formulaireInstallation(){
  echo "
    
    <div style='width:500px'>
      <p>
      Pour faire l'installation de Catofong, vous devez pr&eacute;alablement avoir accès à une base de donn&eacute;e. Vous pouvez
      &eacute;galement utiliser une base de donn&eacute;e existante (il est fortement conseill&eacute; d'utiliser un pr&eacute;fixe de table).
      </p>
      <form method='POST'>
        <fieldset><legend>Identification de la base de donn&eacute;e</legend>
          <table>
            <tr>
              <td>Nom de la base de donn&eacute;e</td><td><input type='text' name='bd_nom' /></td>
            </tr>
            <tr>
              <td>IP</td><td><input type='text' name='bd_ip' value='localhost' /></td>
            </tr>
            <tr>
              <td>Pr&eacute;fixe</td><td><input type='text' name='bd_prefix' value='' /></td>
            </tr>
          </table>
        </fieldset>
        <fieldset><legend>Utilisateur de la base de donn&eacute;e </legend>
          <table>
            <tr>
              <td>Nom :</td><td><input type='text' name='bd_usr' /></td>
            </tr>
            <tr>
              <td>Mot de passe :</td><td><input type='password' name='bd_mdp' /></td>
            </tr>
          </table>
        </fieldset>
        <input type='submit' value='suivant' />
      </form>
    </div>";
  
  
}
function sauvegarderInformations(&$request,$conf_file){
  error_reporting(E_ALL);
  if ($request["bd_prefix"] != "" && substr($request["bd_prefix"],-1)){
    $request["bd_prefix"] .= "_";
  }
  
  $conf = file_get_contents("./$conf_file");
  $conf = str_replace("\"BD_USR\",\"\"", '"BD_USR","'.$request["bd_usr"].'"',$conf);
  $conf = str_replace("\"BD_NOM\",\"\"", '"BD_NOM","'.$request["bd_nom"].'"',$conf);
  $conf = str_replace("\"BD_PREFIX\",\"\"", '"BD_PREFIX","'.$request["bd_prefix"].'"',$conf);
  $conf = str_replace("\"BD_MDP\",\"\"", '"BD_MDP","'.$request["bd_mdp"].'"',$conf);
  $conf = str_replace("\"BD_IP\",\"\"", '"BD_IP","'.$request["bd_ip"].'"',$conf);
  file_put_contents("conf/conf.inc.php",$conf);
}
function installationMAJ($bd_prefix, $premiere = false){
  global $version_courante;
  if ($premiere){ 
    $requetes = catofongVersion1();
    executerRequetes($bd_prefix,$requetes);
  }
  else{
    $resultat = mysql_query("SELECT valeur FROM ". BD_PREFIX ."configurations WHERE nom='version'");
    if ($row = mysql_fetch_row($resultat)){
      if ($row[0] == $version_courante)
        echo "Votre base de donn&eacute;es est Ã  jour avec la version courante du système de formulaire.";
      else{
        for ($i = $row[0] + 1 ; $i <= $version_courante ; $i++ ){
          $fonction = "catofongVersion". i ;
          $requetes = $fonction();
          executerRequetes($requetes);
        }
      }
    }
    else
      echo "impossible de d&eacute;tecter la version.";
  }
}

function executerRequetes($bd_prefix,$requetes){
  $nb = count($requetes);
  foreach($requetes as $key=>$requete){
    $requete = str_replace('%PREFIXE_TABLE%',$bd_prefix,$requete);
    mysql_query($requete);
    echo mysql_error();
    echo "Requête $key de $nb <br />"; 
  }
  echo "termin&eacute; ! <a href='admin/index.php'>Proc&eacute;der &agrave; l'interface d'administration</a>";
}
function catofongVersion1(){
  $requetes  = array();
  $requetes[] = "
                  CREATE TABLE IF NOT EXISTS `%PREFIXE_TABLE%champ` (
                    `id_champ` int(10) unsigned NOT NULL auto_increment,
                    `etiquette_champ` varchar(50) NOT NULL,
                    `type_champ` int(10) unsigned NOT NULL,
                    `multiple_champ` tinyint(4) NOT NULL,
                    `selection_champ` varchar(800) default NULL,
                    `poids_champ` int(11) NOT NULL,
                    `id_evenement` int(10) unsigned NOT NULL,
                    PRIMARY KEY  (`id_champ`)
                  ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;";

  $requetes[] = "
                  CREATE TABLE IF NOT EXISTS `%PREFIXE_TABLE%enregistrement` (
                    `id_enregistrement` int(10) unsigned NOT NULL auto_increment,
                    `id_formulaire` int(11) unsigned NOT NULL,
                    `id_evenement` int(10) unsigned NOT NULL,
                    `id_champ` int(10) unsigned NOT NULL,
                    `valeur_enregistrement` varchar(500) NOT NULL,
                    PRIMARY KEY  (`id_enregistrement`)
                  ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;";

  $requetes[] = "
                  CREATE TABLE IF NOT EXISTS `%PREFIXE_TABLE%evenement` (
                    `id_evenement` int(10) unsigned NOT NULL auto_increment,
                    `titre_evenement` varchar(150) NOT NULL,
                    `debut_evenement` int(11) default NULL,
                    `fin_evenement` int(11) default NULL,
                    `debut_inscription_evenement` int(10) unsigned default NULL,
                    `fin_inscription_evenement` int(11) default NULL,
                    `crea_evenement` timestamp NOT NULL default '0000-00-00 00:00:00',
                    `modif_evenement` timestamp NOT NULL default '0000-00-00 00:00:00' on update CURRENT_TIMESTAMP,
                    `nom_referent_evenement` varchar(50) NOT NULL,
                    `archive_evenement` enum('0','1') default NULL,
                    PRIMARY KEY  (`id_evenement`)
                  ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;";

  $requetes[] = "
                  CREATE TABLE IF NOT EXISTS `%PREFIXE_TABLE%evenement_gestion` (
                    `id_membre` int(10) unsigned NOT NULL,
                    `id_evenement` int(10) unsigned NOT NULL,
                    PRIMARY KEY  (`id_membre`,`id_evenement`)
                  ) ENGINE=MyISAM DEFAULT CHARSET=latin1;";
  $requetes[] = "
                  CREATE TABLE IF NOT EXISTS `%PREFIXE_TABLE%formulaire` (
                    `id_formulaire` int(10) unsigned NOT NULL auto_increment,
                    `date_formulaire` int(10) unsigned NOT NULL,
                    `ip_formulaire` varchar(15) NOT NULL,
                    PRIMARY KEY  (`id_formulaire`)
                  ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;";

  $requetes[] = "
                  CREATE TABLE IF NOT EXISTS `%PREFIXE_TABLE%membre` (
                    `id_membre` int(10) unsigned NOT NULL auto_increment,
                    `nom_membre` varchar(30) NOT NULL,
                    `prenom_membre` varchar(30) NOT NULL,
                    `courriel_membre` varchar(150) NOT NULL,
                    `membre_membre` tinyint(1) NOT NULL,
                    `ext_tel_membre` int(10) unsigned NOT NULL,
                    PRIMARY KEY  (`id_membre`)
                  ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;";

  $requetes[] = "
                  CREATE TABLE IF NOT EXISTS `%PREFIXE_TABLE%configurations` (
                    `id` int(11) unsigned NOT NULL,
                    `nom` varchar(50) NOT NULL,
                    `valeur` varchar(250) default NULL,
                    PRIMARY KEY  (`id`)
                  ) ENGINE=MyISAM DEFAULT CHARSET=latin1;";
  
  $requetes[] = " INSERT INTO `%PREFIXE_TABLE%configurations` (`id`, `nom`, `valeur`) VALUES
                  (0, 'version', '1');";
  
  return $requetes;
}

function catofongVersion2(){
  
}

?>
